﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text;
using System.Data;
using Suspiros_ObjetosNegocio;
using Suspiros_Persistencia;
using System.IO;

namespace SuspirosWeb
{
    public partial class Formulario_web14 : System.Web.UI.Page
    {
        ProductoDAO productos = new ProductoDAO();
        CarritoDAO carrito = new CarritoDAO();


        protected void Page_Load(object sender, EventArgs e)
        {
            int id = Convert.ToInt32(Request.QueryString["id"]);
            //si id es 1, carga los productos del catalogo seleccionado
            if (id == 1)
            {
                desplegarProductos();
                //***PRODUCTOS***
            }
            else if (id == 2)
            {
                if (Session["UserSessionId"] == null)
                {
                    //Declaramos un StringBuilder para almacenar el alert que queremos mostrar
                    StringBuilder sbMensaje = new StringBuilder();
                    //Aperturamos la escritura de Javascript
                    sbMensaje.Append("<script type='text/javascript'>");
                    //Le indicamos al alert que mensaje va mostrar
                    sbMensaje.AppendFormat("alert('{0}');", "Es necesario iniciar sesion");
                    //Cerramos el Script
                    sbMensaje.Append("</script>");
                    //Registramos el Script escrito en el StringBuilder
                    ClientScript.RegisterClientScriptBlock(this.GetType(), "mensaje", sbMensaje.ToString());
                    desplegarProductos();
                }
                else
                {
                    //recupera los valores del path
                    int idProducto = Convert.ToInt32(Request.QueryString["producto"]);
                    int idUsuario = Convert.ToInt32(Request.QueryString["usuario"]);//sp_agregarProductoCarrito
                    int cActivo = carrito.obtenerCarritoActivo(idUsuario);
                    int idCarrito = 0;
                    //si es igual de 0 creara un carrito nuevo
                    if (cActivo == 0)
                    {
                        idCarrito = carrito.agregarCarritoByUsuario(idUsuario);
                    }
                    else
                    {
                        //si no obtiene su carrito
                        idCarrito = carrito.obtenerIDCarritoByUsuario(idUsuario);
                    }
                    int ProductoAgregarExist = carrito.obtenerProductoCarritoActivo(idCarrito, idProducto);
                    if (ProductoAgregarExist == 0)
                    {
                        //agrega producto al carrito del ususario
                        carrito.agregarProductoCarrito(idCarrito, idProducto);
                    }
                    //despliega los productos.
                    desplegarProductos();
                    
                }
            }
            else
            {
                Response.Redirect("../vistas/index.aspx");
            }
        }

        private void desplegarProductos() {
            int usuario = 0;
            //si existe un usuario iniciado entrara..
            if (Session["UserSessionId"] != null) usuario = (int)Session["UserSessionId"];
            //recupera el id del catalogo
            int idCatalogo = Convert.ToInt16(Request.QueryString["catalogo"]);
            //obtioene los productos por catalogo...
            DataTable result = productos.obtenerProductosByCatalogo(idCatalogo).Tables[0];
            List<Producto> listaProductos = new List<Producto>();
            //Setear productos
            Producto producton;
            foreach (DataRow row in result.Rows)
            {
                producton = new Producto(
                (int)Convert.ToInt32(row["id"]),
                Convert.ToString(row["imagen"]),
                Convert.ToString(row["nombre"]),
                Convert.ToString(row["descripcion"]),
                Convert.ToDouble(row["precio"]),
                (int)Convert.ToInt32(row["stock"]),
                (int)Convert.ToInt32(row["catalogo"])
                );
                listaProductos.Add(producton);
            }
            //Desplegar productos en pagina
            StringBuilder display = new StringBuilder();
            display.Append("<table>");
            int contador = 0;//por cada 4 iteraciones ara un salto de fila en la tabla
            for (int i = 0; i < listaProductos.Count; i++)
            {

                Producto producto = listaProductos[i];
                if (contador == 0) display.Append("<tr>");
                display.Append("<td>");
                display.Append("<img src='../imagesProds/" + producto.Imagen + "' />");//imagen
                display.Append("<h2>" + producto.Nombre + "</h2>");//Nombre
                display.Append("<p>" + producto.Descripcion + "</p>");//descripcion
                display.Append("<br/>");//descripcion
                display.Append("<a href='../vistas/Products.aspx?id=2&catalogo=" + idCatalogo + "&producto=" + producto.Id + "&usuario=" + usuario + "'><input type='button' id='" + producto.Id + "' runat='server' value='Add To Cart' /></a>");
                display.Append("</td>");
                contador++;
                if (contador == 3) { display.Append("</tr>"); contador = 0; }
            }
            display.Append("</tr>");
            display.Append("</table>");
            //tblProductos.RenderControl(new HtmlTextWriter(new StringWriter(display)));// Cargar Tablaaaaa
            tblProductosC.InnerHtml = display.ToString();
        }

    }
}
